home *** CD-ROM | disk | FTP | other *** search
- /*
- * fbios.c
- *
- * Stdscr Curses for PC Class Machines.
- *
- * Copyright 1990, 1993 by Anthony Howe. All rights reserved. No warranty.
- */
-
- #include <fbios.h>
-
- #define VIDEO 0x10
- #define KBD 0x16
-
- static union REGS regs;
-
- void
- SetVideoMode(mode)
- int mode;
- {
- regs.h.ah = 0;
- regs.h.al = mode;
- int86(VIDEO, ®s, ®s);
- }
-
- void
- SetCursorShape(start_line, end_line)
- int start_line, end_line;
- {
- regs.h.ah = 1;
- regs.h.ch = start_line;
- regs.h.cl = end_line;
- int86(VIDEO, ®s, ®s);
- }
-
- void
- SetCursorPos(page, row, col)
- int page, row, col;
- {
- regs.h.ah = 2;
- regs.h.bh = page;
- regs.h.dh = row;
- regs.h.dl = col;
- int86(VIDEO, ®s, ®s);
- }
-
- void
- ScrollUp(nlines, attr, row_ul, col_ul, row_br, col_br)
- int nlines;
- chtype attr;
- int row_ul, col_ul, row_br, col_br;
- {
- regs.h.ah = 6;
- regs.h.al = nlines;
- regs.h.bh = attr >> 8;
- regs.h.ch = row_ul;
- regs.h.cl = col_ul;
- regs.h.dh = row_br;
- regs.h.dl = col_br;
- int86(VIDEO, ®s, ®s);
- }
-
- chtype
- GetChtype(page)
- int page;
- {
- regs.h.ah = 8;
- regs.h.bh = page;
- int86(VIDEO, ®s, ®s);
- return ((chtype) regs.x.ax);
- }
-
- void
- PutChtype(page, ch)
- int page;
- chtype ch;
- {
- regs.h.ah = 9;
- regs.x.cx = 1;
- regs.h.bh = page;
- regs.h.al = ch & 0xff;
- regs.h.bl = (ch & 0xff00) >> 8;
- int86(VIDEO, ®s, ®s);
- }
-
- void
- PutChtypeN(page, ch, n)
- int page;
- chtype ch;
- int n;
- {
- regs.h.ah = 9;
- regs.x.cx = n;
- regs.h.bh = page;
- regs.h.al = ch & 0xff;
- regs.h.bl = (ch & 0xff00) >> 8;
- int86(VIDEO, ®s, ®s);
- }
-
- void
- PutChar(page, ch)
- int page, ch;
- {
- regs.h.ah = 10;
- regs.x.cx = 1;
- regs.h.bh = page;
- regs.h.al = ch & 0xff;
- int86(VIDEO, ®s, ®s);
- }
-
- void
- PutCharN(page, ch, n)
- int page, ch, n;
- {
- regs.h.ah = 10;
- regs.x.cx = n;
- regs.h.bh = page;
- regs.h.al = ch & 0xff;
- int86(VIDEO, ®s, ®s);
- }
-
- void
- AddChar(page, ch)
- int page;
- int ch;
- {
- regs.h.ah = 14;
- regs.h.bh = page;
- regs.h.al = ch;
- int86(VIDEO, ®s, ®s);
- }
-
- unsigned short
- GetCursorShape(page)
- int page;
- {
- regs.h.ah = 3;
- regs.h.bh = page;
- int86(VIDEO, ®s, ®s);
- return (regs.x.cx);
- }
-
- int
- GetDisplayPage()
- {
- regs.h.ah = 15;
- int86(VIDEO, ®s, ®s);
- return (regs.h.bh);
- }
-
- int
- GetVideoMode()
- {
- regs.h.ah = 15;
- int86(VIDEO, ®s, ®s);
- return (regs.h.al);
- }
-
- int
- GetScreenWidth()
- {
- regs.h.ah = 15;
- int86(VIDEO, ®s, ®s);
- return (regs.h.ah);
- }
-
- int
- GetKey()
- {
- regs.h.ah = 0;
- int86(KBD, ®s, ®s);
- return (regs.x.ax);
- }
-
-